Efficient communication systems are becoming increasingly important as the demand for communication services increases. Communication services can range from the processing of telephone call setup requests, to the routing of Internet Protocol (IP) data packets over networks, to the processing of Hypertext Transfer Protocol (HTTP) requests for websites. Communication systems generally include servers to process requests for services from clients. Servers can range from telecommunication switches for processing of telephone call setup requests, to network routers for routing of IP data packets, to web servers for processing HTTP requests.
Occasionally, service requests may arrive at a server at a faster rate than the server can process the requests. The rate of receiving requests can vary due to one or more of the following: media-stimulated events (e.g., mass-calling events), emergencies (e.g., emergency calls/messages), equipment failures, and/or auto-scheduled requests (e.g., auto-scheduled calls/requests). The rate of the server processing the requests can change due to one or more of the following: variations in processing demands of different requests, background or administrative activities that run on the server, and/or partial or full failure of software or hardware elements in the server. Communication servers typically implement overload controls to maintain the throughput of service request processing at acceptable levels during these periods of high demand. Two general server overload control schemes are typically implemented. The first approach uses a measure of computer processing unit utilization as a measure of the system overload. The second approach uses a measure of the server's buffer occupancy as a measure of the system overload, which is typically compared to a static optimal buffer size value. Current overload control algorithms typically use only one of computer processing unit utilization or server buffer occupancy as a measure of the system overload.